home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 194_01 / crypt1.c < prev    next >
Text File  |  1985-11-13  |  1KB  |  58 lines

  1. /* [CRYPT1.C of JUGPDS Vol.17]
  2. *****************************************************************
  3. *                                *
  4. *    Written by  Hakuo Katayose (JUG-CP/M No.179)        *
  5. *            49-114 Kawauchi-Sanjuunin-machi        *
  6. *            Sendai, Miyagi 980                          *
  7. *            Phone: 0222-61-3219                *
  8. *                                *
  9. *    Edited & tested by Y. Monma (JUG-C/M Disk Editor)       * 
  10. *                                *
  11. *****************************************************************
  12. */
  13.  
  14. /* crypt1 - encrypt and decrypt for binary file */
  15.  
  16. #include "stdio.h"
  17.  
  18. #define    MAXKEY    32
  19.  
  20. main(argc, argv)
  21. int    argc;
  22. char *argv[];
  23.  
  24. {
  25.     int    i, keylen, cnt, n, fd, n2, fd2;
  26.     char    key[MAXKEY], *p, *q;
  27.     char    tbuf[(1024*30)];
  28.  
  29.     p = tbuf;
  30.     if (argc < 4)
  31.         error("Usage: crypt0 key infile outfile");
  32.     strcpy(key, argv[1]);
  33.     keylen = strlen(key);
  34.     if ((fd = open( argv[2], 0)) == ERROR) {
  35.         fprintf(STDERR, "crypt1: can't open %s\n", *argv);
  36.         exit();
  37.         }
  38.     else if ((fd2 = creat( argv[3])) == ERROR) {
  39.         fprintf(STDERR, "crypt1: can't open %s\n", *argv);
  40.         exit();
  41.         }
  42.     else
  43.         while ((n = read(fd, p, 240) ) > 0) {
  44.             printf("%4d sectors READ.\n", n);
  45.             q = p;
  46.             cnt = n * 128;
  47.             for (i = 1; cnt--; i= i%keylen + 1)
  48.                 *q++ ^= key[i];
  49.             n2 = write(fd2, p, n);
  50.             printf("%4d sectors WRITE.\n", n2);
  51.             if (n2 != n) {
  52.                 break;
  53.             }
  54.         }
  55.     close(fd);
  56.     close(fd2);
  57. }
  58.